<?php

/*
 * Login form
 */

class LoginForm extends CFormModel {

    public $email;
    public $password;
    public $rememberMe;
    private $_identity;

    /**
     * Declares the validation rules.
     * The rules state that username and password are required,
     * and password needs to be authenticated.
     */
    public function rules() {
	return array(
	    // username and password are required
	    array('email, password', 'required'),
	    array('email', 'email'),
	    // rememberMe needs to be a boolean			
	    array('rememberMe', 'boolean'),
	    // password needs to be authenticated
	    array('password', 'authenticate')
	);
    }

    public function attributeLabels() {
	return array(
	    'email' => 'Email',
	    'password' => 'Password',
	    'rememberMe' => 'Check me out'
	);
    }

    public function attributeNames() {
	
    }

    /**
     * Authenticates the password.
     * This is the 'authenticate' validator as declared in rules().
     */
    public function authenticate($attribute, $params) {
	$this->_identity = new UserIdentity($this->email, $this->password);
	if (!$this->_identity->authenticate())
	    $this->addError('password', 'Incorrect username or password.');
    }

    /**
     * Logs in the user using the given username and password in the model.
     * @return boolean whether login is successful
     */
    public function login() {
	if ($this->_identity === null) {
	    $this->_identity = new UserIdentity($this->email, $this->password);
	    $this->_identity->authenticate();
	}
	if ($this->_identity->errorCode === UserIdentity::ERROR_NONE) {
	    $duration = $this->rememberMe ? 3600 * 24 * 30 : 0; // 30 days
	    Yii::app()->user->login($this->_identity, $duration);
	    return true;
	}
	else
	    return false;
    }

}

